/**
 * @author wanggang
 * @param elem 要产生菜单的节点
 * @param posElem 在那个节点的旁边产生menu
 * @param _url 菜单内容来自于那个url
 * @constructor 
 */
function openmenu(elem , _url , posElem){
	// 处理select的hide
//	hideSelect();
	
	if(_url.indexOf('?')>-1){
		_url+="&randomFlag="+Math.random();
	}else{
		_url+="?randomFlag="+Math.random();
	}
	// 判断菜单容器是否存在,如果不存在就创建一个
//	var _container = document.getElementById('i_menu_container_id');
//	if( null == _container ){
//		_container = document.getElementById('i_menu_container_id');
//		$( _container ).attr( 'id' , 'i_menu_container_id' );
//		$( _container ).addClass( 'i_ment_container_div' );
//		
//	}
	
	// 判断节点是否存在，如果不存在就构建一个
	var _div = document.getElementById('i_menu_div_id');
	
	if(null == _div){
		var _div = document.createElement('div');
		
		// 设置id与css样式 
		$(_div).attr('id' , 'i_menu_div_id');
		
		// 菜单容器的div样式
		$(_div).addClass('i_ment_container_div');
		
		// 定位
		var _target = null;
		if(typeof(posElem)=='undefined'){
			_target = elem;
		}else if(typeof(posElem)=='string'){
			_target = document.getElementById(posElem);
		}else {
			_target = posElem;
		}
		$(_div).css({
			left : $(_target).offset().left + 'px',
			top : ( $(_target).offset().top + $(_target).height()  ) + 'px'
		});
		
		// 为menu的加载提供进度信息
	    $( _div ).addClass( 'i_menu_container_load' );
	    
		document.body.appendChild(_div);
		
		// 从后台请求数据
		$.ajax({
			url : encodeURI(_url),
			type : 'POST',
			dataType : 'xml',
			success : parseXML,
			error : menuErrorFun
		});
		
	// 如果存在就调用去除方法
	}else{
		removemenu();
	}
	
	
	// 关于生成菜单时出现异常的处理方式
	function menuErrorFun( result ){
		document.write( result.responseText );
	}
	function parseXML(result){
		var subCon = document.createElement('div');
		// 请求回来的所有xml数据
		var arr = result.getElementsByTagName('item');
		// alert(typeof(arr[0].length) == 'undefined');
		for(var i=0;i<arr.length;i++){
			// 取出id属性，如果没有默认为''
			var _id = ( typeof($(arr[i]).attr('id'))=='undefined' ) ? '' : $(arr[i]).attr('id') ;
			// 取出text属性，如果没有就默认为''
			var _text = ( typeof($(arr[i]).attr('text'))=='undefined' ? '' : $(arr[i]).attr('text') );
			// 取出disable属性，如果没有默认为false
			var _disable = ( typeof($(arr[i]).attr('disable'))=='undefined' ? false : new Boolean($(arr[i]).attr('disable')) );
			// 取出action属性，如果没有默认为''
			var _action = ( typeof($(arr[i]).attr('action'))=='undefined' ? '' : $(arr[i]).attr('action') );
			// 把以上的属性都添加到菜单项中，每一个菜单项都是一个div , 如果分隔符就是一条线hr
			if('-' == _text){
				var _hr = document.createElement('hr');
				// 添加分隔线的样式
				$(_hr).addClass('i_child_menu_hr');
				// 添加到div
				$(subCon).append(_hr);
			// 如果不是分割线
			}else{
				var _itemdiv = document.createElement('div');
				// 添加子菜单的样式
				$(_itemdiv).addClass('i_child_menu_div');
				// 如果此菜单不可用，那就再添加一个不可用的css样式，也不再添加action属性
				if(_disable){
					$(_itemdiv).addClass('i_child_menu_div_disable');
				}else{
					// 添加click事件
					// _itemdiv.onclick = new Function(_action);
					$(_itemdiv).bind('click' , new Function(_action));
					// 对于可用的菜单还要添加mouseover与mouseout的事件
					$(_itemdiv).bind('mouseover' , function(){
						$(this).addClass('i_child_menu_div_mouseover');
					});
					$(_itemdiv).bind('mouseout' , function(){
						$(this).removeClass('i_child_menu_div_mouseover');
					});
				}
				// 添加文本内容
				var txt = document.createTextNode(_text);
				$(_itemdiv).append(txt);
				// 添加到div中
				$(subCon).append(_itemdiv);
			}
		}
		// 移除menu的进度条信息
		$( _div ).removeClass( 'i_menu_container_load' );
		$( _div ).append( subCon );
		// 在产生时在绑定document的onclick事件
		$(document).bind('click' , bindMenuEvent);
		// 当发生错位时
		if( $( _div).offset().left + $(_div).width() > $(document.body).width() ){
			var _left = $(_target).offset().left + $(_target).width() - $(_div).width() ;
			$(_div).css({
				left : _left + 'px'
			});
		}
		// alert( ($(_div).offset().top + $(_div).height()) + " >>  " + $(document.body).height() + "   >>   " + document.body.scrollHeight + "  >>>  " + document.body.offsetHeight + "  >>  " + window.screen.availHeight);
		if( $(_div).offset().top + $(_div).height() > $(document.body).height() ){
			var _top = $(_target).offset().top - $(_div).height() ;
			$(_div).css({
				top : _top + 'px'
			});
		}		
		$("#i_menu_div_id").bgiframe();		
	}
}
/**
 * 绑定事件到document
 * @author wanggang
 */
function bindMenuEvent(e){
	var e = e || window.event;
	var src = e.target || e.srcElement;
	if($(src).attr('id')=='bigMenu' 
		|| $(src).attr('id')=='i_menu_div_id' 
		|| ( $(src).attr('class').indexOf('i_child_menu_div_disable') !=-1 
			&& $(src).attr('class').indexOf('i_child_menu_div') !=-1 ) 
		|| $(src).attr('class').indexOf('i_child_menu_hr') !=-1 ){
		return;
	}
	removemenu();
}
/**
 * 删除menu
 * @author wanggang
 * 
 */
function removemenu(){
	// 取出菜单下的所有子节点，都解除与js对象的关联
	$('#i_menu_div_id > div').each(function(){
		$(this).unbind();
	});
	// 从dom树中移除对象
	$('#i_menu_div_id').remove();
	// document解除与click事件的绑定
	$(document).unbind('click');
	// show select
//	showSelect();
}
		
		